LinuC-1 - 101試験 - 1.05:ハードウェア、ディスク、パーティション、ファイルシステム - 1.05.2 ハードディスクのレイアウトとパーティション

Last Update : August 21 2022 17:47:20

     

a.Linux のパーティション

ハードディスクはパーティションという領域に分割して、利用することができます。Linuxを利用するためには、最低限2つのパーティションが必要になります。

  • ルートパーティション
  • スワップパーティション

パーティションに分割して利用することで以下のようなメリットがあります。

  • ディスクに障害が発生した場合に、影響を小さくできる。
  • 障害発生時にスムーズな復旧作業ができる。
  • 柔軟なシステム管理ができる。

また、メンテナンスをしやすくするためには、上記のパーティション以外に下のようにパーティションを分ける方がよいでしょう。

  • /boot
    ブートストラッププロセス中に使用されたファイルと共に、オペレーティングシステムカーネル (システムが Red Hat Enterprise Linux をブートできるようにする) が含まれています。
  • /home
    ユーザーごとのデータが保管されます。システムのアップグレードや再インストール時に環境設定を引き継ぐことができます。
  • /usr
    プログラムやライブラリなどがおかれます。
  • /var
    多くのアプリケーション用のコンテンツを収納します。 また、ダウンロードされた更新パッケージの一時的な保存にも使用されます。
    また、各種ログファイルやメールスプールなど更新頻度の高いファイルがおかれます。


b. パーティションのレイアウト設計

ディスクをパーティションに分割して利用するには、以下の点を考慮する必要があります。

  • システムの用途
  • ハードウェア構成
  • ディスクの容量
  • バックアップ方法
※スワップ領域のサイズは物理メモリの1~2倍程度のサイズを割り当てます。


c. LVMの基本的機能

LVM(論理ボリューム管理:LogicalVolumeManagement)とは、物理ボリュームのパーティション上にそのままファイルシステムを作成せず、単体又は複数の物理ボリュームをまとめて扱い、ボリュームグループという仮想ディスクを作成し、その上に仮想的なパーティションを作成してボリューム管理する手法です。
メリットはディスクの追加や論理ボリュームの拡張といった作業を、システムを止めずに実行できます。また、複数のディスクをひとつにまとめることで、アプリケーションからは1台の巨大ディスクとして利用できます。とりわけスケーラビリティや高可用性が求められるミッションクリティカル環境では、こうしたLVMの能力はとても有効です。

スナップショット

LVMにはスナップショットと呼ばれる機能が備えられています。これは、論理ボリュームのデータをスナップショットとして取得した時点で、読み取り専用の別の論理ボリュームとしてコピーしておく機能です。スナップショットは論理ボリューム上のすべてのデータのコピーを行うのではなく、元データへのリンク情報のみを作成するため、非常に高速に動作します。スナップショットの取得後に、元データが更新された場合、更新される前のデータをスナップショット領域に保存します。そのため、通常は元データの領域よりも少ない領域(一般的には10%~20%程度)があればスナップショットとして利用できます。 さらに、スナップショットに対しては読み込みしかできないため、データが更新されるといった危険がありません。このため、ファイルシステムのバックアップを取得する際に、まずスナップショットを取得して、バックアップ操作はスナップショットに対して行うことで、バックアップ実行中のデータ更新も発生しなくなるため、バックアップデータの一貫性が保たれます。このようにスナップショット機能はファイルシステムのバックアップを取得する目的に非常に合致します。

  • 論理ボリュームのある時点のデータのコピー
  • ただし実体は元データへのリンクなのでデータ量は少ない
  • 元データが更新された場合のみ更新前のデータをスナップショット領域に保存する
  • ファイルシステムのバックアップの用途に便利

d. パーティション管理コマンド

1. fdisk コマンド

fdisk コマンドは、ハード・ディスク領域を分割して複数のパーティションを作成・編集するためのコマンドです。MBR を使う場合、fdiskでパーティションを操作します。fdiskコマンドを実行すると対話型のコマンド入力によって操作を行うことができます。fdiskの実行には、管理者権限(root権限)が必要です。

● fdisk コマンド構文
  fdisk [オプション] デバイス

● fdisk コマンドオプション
 -b ブロック デバイスのブロック・サイズを指定する
 -C シリンダ デバイスのシリンダ数を指定する
 -H ヘッダ デバイスのヘッダ数を指定する
 -S セクター デバイスの1トラックあたりのセクター数を指定する
 -l マウントされているデバイスのパーティション情報を表示する
 -u -l オプションを利用する際、容量をシリンダ数単位で表示する
 -s パーティション 指定したパーティションの容量を表示する。容量はブロック数

● fdisk 対話型プロンプトでのサブコマンド
 aブートの可否を切り替える
 bBSD用パーティションのディスク・ラベルを編集する
 cDOSコンパチブルの可否を切り替える
 dパーティションを削除する
 l利用可能なパーティション・タイプを表示する
 m利用可能なコマンドを一覧する
 n新しいパーティションを作成する
 oDOSパーティションを作成する
 pパーティション情報を表示する
 qパーティション情報を保存せずに終了する
 sSUN用の新しいディスク・ラベルを作成する
 tパーティション・タイプを変更する。初期値は"Linux native"(83)
 u容量の表示単位を切り替える
 vパーティションを検査する
 wパーティション情報を書き込んで、終了する


2. gdisk コマンド

gdisk コマンドは、ハード・ディスク領域を分割して複数のパーティションを作成・編集するためのコマンドです。GPT(GUID Partition Table)に対応しているため、よりサイズの大きなパーティションを作成できます。gdiskの実行には、管理者権限(root権限)が必要です。

● gdisk コマンド構文
  gdisk [オプション] デバイス

● gdisk コマンドオプション
 -l 指定したデバイスのパーティションテーブルを一覧表示する


3. parted コマンド

parted コマンドは、パーティションの作成や削除などに使うコマンドです。fdiskの実行には、管理者権限(root権限)が必要です。

● parted コマンド構文
  parted [オプション] デバイス

● parted コマンドオプション
 -l
 --list
全てのブロックデバイスのパーティション情報を表示する
 -m
 --machine
人間に読みやすい表示ではなく、機械が処理しやすい書式で出力する
 -s
 --script
対話処理をしない(「-s デバイス コマンド1 コマンド2……」のように、partedで実行するコマンドを引数として指定する)
 -a 調整方法
 --align=調整方法
新規パーティションのアラインメント調整方法を以下から選んで指定する。
・none:ディスクタイプで使用できる最小のアラインメントを使用
・cylまたはcylinder:シリンダに合わせて調整
・minまたはminimal:ディスク情報から得られる最小のアラインメントを使用
・optまたはoptimal:ブロックサイズの倍数に合わせて調整

● parted 対話型プロンプトでのサブコマンド
 p 対象
 print 対象
指定した対象を表示する、対象は「devices(パーティションテーブル)」「free(空き領域)」「listまたはall(全てのパーティションの情報、デフォルト)」
 select デバイス名 操作するデバイスを変更する
 align-check 方法 パーティション番号 パーティションが指定した方法(minまたはopt)で調整されているかどうかをチェックする
 mklabel 種類
 mktable 種類
しいラベル(パーティションテーブルを指す用語)を作成する。MBRにしたい場合は「msdos」、GPTにしたい場合は「gpt」を指定
mkpart 種類1 種類2 開始 終了 ・MBRの場合:指定したパーティション(種類1)、primary/プライマリ/extended/拡張のいずれか)、ファイルシステム(種類2)、開始位置、終了位置でパーティションを作成する。ファイルシステムの種類は省略可能
・GPTの場合:指定した名前とファイルシステムの種類)、開始位置、終了位置のパーティションを作成する。ファイルシステムの種類は省略可能
 m利用可能なコマンドを一覧する
 name 番号 名前 指定した番号のパーティションに名前を付ける(MBRでは無効、GPTでは有効)
 rescue 開始 終了 開始位置、終了位置で指定した範囲付近にあるパーティションをユーザーの同意を得て復活する。位置は4G、10%、-1s(1セクタ前)などと指定(負の値を指定した場合はディスクの終わりからの位置となる)
 rm 番号 指定した番号のパーティションを削除する
 disk_set フラグ onまたはoff 選択しているデバイスのフラグを設定する
 disk_toggle フラグ 選択したデバイスのフラグの状態をonならoff、offならonにする
 set 番号 フラグ onまたは同off 指定したパーティションのフラグを設定する
 toggle 番号 フラグ 指定したパーティションのフラグの状態をonならoff、offならonにする
 unit 単位 デフォルトの単位を「s(セクタ)」「%」「B、kB、MB、GB、TB(1000の倍数)」「kiB、MiB、GiB、TiB(1024の倍数)」などから選択する
 quit、またはq partedを終了する

全ディスクのパーティション情報を表示する

# parted -l
/モデル: VMware Virtual NVMe Disk (nvme)
ディスク /dev/nvme0n1: 21.5GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  1075MB  1074MB  primary  xfs               boot
 2    1075MB  21.5GB  20.4GB  primary                    lvm

追加のディスクを利用できるようにする。
1. 追加したディスクの確認

# parted -l
モデル: VMware Virtual NVMe Disk (nvme)
ディスク /dev/nvme0n1: 21.5GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  1075MB  1074MB  primary  xfs               boot
 2    1075MB  21.5GB  20.4GB  primary                    lvm


エラー: /dev/nvme0n2: ディスクラベルが認識できません。
モデル: VMware Virtual NVMe Disk (nvme)                                   
ディスク /dev/nvme0n2: 5369MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: unknown
ディスクフラグ: 

エラーで/dev/nvme0n2のデバイスが表示されている。パーティションテーブルがunknownになっている。
このデバイスが追加されてディスクになる。


2. 追加したディスクにパーティションを作成する。
デバイスを指定して、partedを対話モードで起動する。 ファイルシステムは、xfs サイズは全部の領域。

# parted /dev/nvme0n2
GNU Parted 3.4
/dev/nvme0n2 を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p      ← ディスクを確認
エラー: /dev/nvme0n2: ディスクラベルが認識できません。
モデル: VMware Virtual NVMe Disk (nvme)                                   
ディスク /dev/nvme0n2: 5369MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: unknown
ディスクフラグ: 
(parted) mklabel  gpt      ← パーティションテーブルにgptを指定します
(parted) p      ← ディスクを確認。パーティションテーブルがgptになっている。                                                               
モデル: VMware Virtual NVMe Disk (nvme)
ディスク /dev/nvme0n2: 5369MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

(parted) mkpart ← パーティションを作成する。mkpartだけを入力すると問い合わせしてしてくる。
パーティションの名前?  []? "Linux filesystem"                             
ファイルシステムの種類?  [ext2]? xfs                                      
開始? 0%                                                                  
終了? 100%                                                                
(parted) p                                                                
モデル: VMware Virtual NVMe Disk (nvme)
ディスク /dev/nvme0n2: 5369MB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
ディスクフラグ: 

番号  開始    終了    サイズ  ファイルシステム  名前              フラグ
 1    1049kB  5368MB  5367MB  xfs               Linux filesystem ←パーティションが作成された。

(parted) quit                                

mkpart "Linux filesystem" xfs 0% 100% と入力すると、問い合わせはなくすぐ実行される。

3. パーティションが作成されたので、xfsでフォーマットする。

# mkfs.xfs /dev/nvme0n2
meta-data=/dev/nvme0n2           isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

4. xfsでフォーマットされたので、/disk2にマウントする。

# mkdir /disk2
# mount /dev/nvme0n2 /disk2
# df -h
ファイルシス               サイズ  使用  残り 使用% マウント位置
devtmpfs                     1.9G     0  1.9G    0% /dev
tmpfs                        1.9G     0  1.9G    0% /dev/shm
tmpfs                        778M  9.7M  769M    2% /run
/dev/mapper/almalinux-root    17G  7.1G   10G   42% /
/dev/nvme0n1p1              1014M  231M  784M   23% /boot
tmpfs                        389M  104K  389M    1% /run/user/1000
/dev/nvme0n2                 5.0G   68M  5.0G    2% /disk2



z. 出題範囲概要

概要 :
  • Linuxシステムにおけるディスクパーティションの構成を設定できる。

詳細 :
  • パーティションについて理解し、操作できる。
    UEFI, ESP(EFI System Partition), fdisk
  • GPTでのgdisk および parted についての基本的な知識
    fdisk, gdisk, parted
  • システムの利用目的に沿ったパーティションの割当ができる。
    / (root), /var, /home, /boot ファイルシステム, スワップスペース
  • LVMの基本的機能の基本概念、特徴、利点・欠点を理解している。
    物理ボリューム、論理ボリューム、動的拡張・縮小、スナップショット

  [ 例題 ] 


         

    www.it-shikaku.jp